home *** CD-ROM | disk | FTP | other *** search
/ MacTech 1 to 12 / MacTech-vol-1-12.toast / Source / MacTech® Magazine / Volume 03 - 1987 / 03.04 Apr 87 / c from VIP / luckie program.c < prev    next >
Encoding:
C/C++ Source or Header  |  1987-03-07  |  3.9 KB  |  272 lines  |  [TEXT/EDIT]

  1. #include "VIPtoC.h"
  2.  
  3. /* Global symbols */
  4.  
  5. char
  6.     Menu[3],
  7.     Quit,
  8.     Window,
  9.     result;
  10.  
  11.  
  12.  
  13.  
  14. /*
  15. -------------- main --------------
  16. V.I.P. Demo program for MacTutor™
  17. by Bill Luckie  © 1987
  18.  
  19. Visual Interactive Programming
  20. V.I.P. by Dominique Lienart, published by Mainstay.*/
  21. main ()
  22. {
  23. VIP_Init ();
  24. vip_DoSetup ();
  25. while (! Quit)
  26.     {
  27.     vip_DoSelect ();
  28.     }
  29. VIP_Exit ();
  30. }
  31.  
  32.  
  33. /*
  34. -------------- About --------------
  35. */
  36. vip_About ()
  37. {
  38.  
  39. char
  40.     AboutFile;
  41.  
  42. Rect
  43.     PortRect,
  44.     WindowRect;
  45.  
  46.  
  47. VIP_set_rect ((long)(50),(long)(40),(long)(312),(long)(472),&WindowRect);
  48. VIP_set_rect ((long)(0),(long)(0),(long)(1000),(long)(432),&PortRect);
  49. VIP_new_window ((char)(2),(char)(1),(char)(1),WindowRect,PortRect,"About GC_ Dist",
  50.         &Window);
  51. VIP_open_file ("AboutGCDist",(char)(1),"TEXT",&AboutFile);
  52. VIP_load_text ((char)(AboutFile),(char)(Window));
  53. VIP_close_file ((char)(AboutFile));
  54. }
  55.  
  56.  
  57. /*
  58. -------------- DoCloseBox --------------
  59. */
  60. vip_DoCloseBox ()
  61. {
  62. if (Window)
  63.     {
  64.     VIP_kill_window ((char)(Window));
  65.     Window = 0;
  66.     }
  67. }
  68.  
  69.  
  70. /*
  71. -------------- DoDialogEvent --------------
  72. */
  73. vip_DoDialogEvent ()
  74. {
  75. }
  76.  
  77.  
  78. /*
  79. -------------- DoEdit --------------
  80. */
  81. vip_DoEdit (item)
  82.     char item;
  83. {
  84. switch ((long)(item))
  85.     {
  86.     case 3:
  87.         {
  88.         VIP_cut_text ();
  89.         break;
  90.         }
  91.     case 4:
  92.         {
  93.         VIP_copy_text ();
  94.         break;
  95.         }
  96.     case 5:
  97.         {
  98.         VIP_paste_text ();
  99.         break;
  100.         }
  101.     case 6:
  102.         {
  103.         VIP_clear_text ();
  104.         break;
  105.         }
  106.     }
  107. }
  108.  
  109.  
  110. /*
  111. -------------- DoFile --------------
  112. */
  113. vip_DoFile (item)
  114.     char item;
  115. {
  116. switch ((long)(item))
  117.     {
  118.     case 1:
  119.         {
  120.         VIP_set_up_page ();
  121.         break;
  122.         }
  123.     case 2:
  124.         {
  125.         if (Window)
  126.             {
  127.             VIP_print_text ((char)(Window));
  128.             }
  129.         else
  130.             {
  131.             VIP_alert ((char)(1),"There is no window to print from.",&result);
  132.             }
  133.         break;
  134.         }
  135.     case 4:
  136.         {
  137.         Quit = 1;
  138.         break;
  139.         }
  140.     }
  141. }
  142.  
  143.  
  144. /*
  145. -------------- DoMenuSelect --------------
  146. */
  147. vip_DoMenuSelect (menu,item)
  148.     char menu;
  149.     char item;
  150. {
  151. if (menu == Menu[(1) - 1])
  152.     {
  153.     vip_DoFile ((char)(item));
  154.     }
  155. else if (menu == Menu[(2) - 1])
  156.     {
  157.     vip_DoEdit ((char)(item));
  158.     }
  159. else if (menu == Menu[(3) - 1])
  160.     {
  161.     vip_DoOptions ((char)(item));
  162.     }
  163. }
  164.  
  165.  
  166. /*
  167. -------------- DoOptions --------------
  168. */
  169. vip_DoOptions (item)
  170.     char item;
  171. {
  172. switch ((long)(item))
  173.     {
  174.     case 1:
  175.         {
  176.         VIP_alert ((char)(1),"This is the Create_Records routine.",&result);
  177.         break;
  178.         }
  179.     case 2:
  180.         {
  181.         VIP_alert ((char)(1),"This is the View_Records routine.",&result);
  182.         break;
  183.         }
  184.     case 3:
  185.         {
  186.         VIP_alert ((char)(1),"This is the Compute Distance... routine.",
  187.         &result);
  188.         break;
  189.         }
  190.     case 5:
  191.         {
  192.         vip_About ();
  193.         break;
  194.         }
  195.     }
  196. }
  197.  
  198.  
  199. /*
  200. -------------- DoSelect --------------
  201. */
  202. vip_DoSelect ()
  203. {
  204.  
  205. char
  206.     EventID,
  207.     EventMessage,
  208.     EventType;
  209.  
  210. Point
  211.     MouseLocation;
  212.  
  213.  
  214. VIP_get_next_event (&EventType,&MouseLocation,&EventMessage,&EventID);
  215. switch ((long)(EventType))
  216.     {
  217.     case 1:
  218.         {
  219.         vip_DoMenuSelect ((char)(EventMessage),(char)(EventID));
  220.         break;
  221.         }
  222.     case 4:
  223.         {
  224.         vip_DoCloseBox ();
  225.         break;
  226.         }
  227.     case 5:
  228.         {
  229.         vip_DoDialogEvent ();
  230.         break;
  231.         }
  232.     }
  233. }
  234.  
  235.  
  236. /*
  237. -------------- DoSetup --------------
  238. */
  239. vip_DoSetup ()
  240. {
  241.  
  242. Rect
  243.     Portrect,
  244.     Windowrect;
  245.  
  246.  
  247. VIP_new_menu ("File",&Menu[(1) - 1]);
  248. VIP_append_menu_item ((char)(Menu[(1) - 1]),"Page Setup...;Print...;(-;Quit/Q");
  249. VIP_new_menu ("Edit",&Menu[(2) - 1]);
  250. VIP_append_menu_item ((char)(Menu[(2) - 1]),"(Undo/Z;(-;Cut/X;Copy/C;Paste/V;Clear");
  251. VIP_new_menu ("Options",&Menu[(3) - 1]);
  252. VIP_append_menu_item ((char)(Menu[(3) - 1]),"Create new Records...;View or Edit Records...;Compute Distance...;(-;About GC_Dist");
  253. VIP_set_rect ((long)(60),(long)(60),(long)(120),(long)(450),&Windowrect);
  254. VIP_set_rect ((long)(0),(long)(0),(long)(120),(long)(450),&Portrect);
  255. VIP_new_window ((char)(4),(char)(1),(char)(1),Windowrect,Portrect,"",
  256.         &Window);
  257. VIP_set_text_font ((char)(0));
  258. VIP_move_to ((long)(15),(long)(75));
  259. VIP_draw_string ("V.I.P. Demo program for MacTutor™",(char)(0));
  260. VIP_move_to ((long)(30),(long)(145));
  261. VIP_draw_string (" by Bill Luckie.",(char)(0));
  262. VIP_move_to ((long)(45),(long)(168));
  263. VIP_draw_string ("© 1987",(char)(0));
  264. VIP_wait ((long)(200));
  265. VIP_kill_window ((char)(Window));
  266. }
  267.  
  268.  
  269. vip_draw_port (wndwID)
  270.     char wndwID;
  271. {
  272. }